package cn.demoncat.util.lang;

import cn.demoncat.util.exception.ParamRuntimeException;
import org.apache.commons.lang3.StringUtils;

/**
 * 相等比较工具
 * 
 * @author 延晓磊
 */
public final class ParamEqualsUtil {

	/**
	 * 断言：判断desc等于src中的任意一个
	 * 
	 * @param msg		错误消息
	 * @param desc		目标
	 * @param src		源
	 * 
	 * @exception ParamRuntimeException	所有src都不等于desc
	 * 
	 * @author 延晓磊
	 *
	 * @since 2017年12月21日
	 */
	public static void assertEquals(String msg, Object desc, Object ...src){
		if (!equals(desc, src)) {
			throw StringUtils.isBlank(msg) ? ParamRuntimeException.ILLEGAL : new ParamRuntimeException(msg);
		}
	}

	/**
	 * 断言：判断desc等于src中的任意一个
	 * 
	 * @param desc		目标
	 * @param src		源
	 * 
	 * @exception ParamRuntimeException	所有src都不等于desc
	 * 
	 * @author 延晓磊
	 *
	 * @since 2017年12月21日
	 */
	public static void checkEquals(Object desc, Object ...src){
		assertEquals(null, desc, src);
	}
	
	/**
	 * 只要有一个src等于desc则返回true(不做非空校验)
	 * 
	 * @param desc 比较的目标
	 * @param src  被比较的目标集
	 * 
	 * @return
	 *
	 * @author 延晓磊
	 */
	public static boolean equals(Object desc, Object ...src){
		if(desc == null || src == null || src.length == 0){
			return false;
		}
		for(Object s : src){
			if(desc.equals(s)) return true;
		}
		return false;
	}
	
}
